package task06_04;


    import java.io.*;

/**
 * @author:yuanbinbing
 * @date: 4/3/0003 14:54
 * @description：比较4种复制方式效率（拷贝7.59M的mp4文件）
 * 第一种方式：基本字节流一次读写一个字节：共耗时22097毫秒
 * 第二种方式：基本字节流一次读写一个字节数组：共耗时37毫秒
 * 第三种方式：字节缓冲流一次读写一个字节：共耗时209毫秒
 * 第四种方式：字节缓冲流一次读写一个字节数组：共耗时16毫秒
 */
public class Copy4Methods {
  public static void main(String[] args) throws IOException{
    long start = System.currentTimeMillis();
    // method1("d:\\copy.mp4", "copy1.mp4");
    // method2("d:\\copy.mp4", "copy2.mp4");
     method3("d:\\copy.mp4", "copy3.mp4");
    // method4("d:\\copy.mp4", "copy4.mp4");
    long end = System.currentTimeMillis();
    System.out.println("共耗时：" + (end - start) + "毫秒");
  }
  // 高效字节流一次读写一个字节数组：
  public static void method4(String srcString, String destString)
      throws IOException {
    BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcString));
    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destString));
    byte[] bys = new byte[1024];
    int len = 0;
    while ((len = bis.read(bys)) != -1) {
      bos.write(bys, 0, len);
    }
    bos.close();
    bis.close();
  }
  // 高效字节流一次读写一个字节：
  public static void method3(String srcString, String destString) throws IOException {
    BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcString));
    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destString));
    int by = 0;
    while ((by = bis.read()) != -1) {
      bos.write(by);
    }
    bos.close();
    bis.close();
  }

  // 基本字节流一次读写一个字节数组
  public static void method2(String srcString, String destString)
      throws IOException {
    FileInputStream fis = new FileInputStream(srcString);
    FileOutputStream fos = new FileOutputStream(destString);

    byte[] bys = new byte[1024];
    int len = 0;
    while ((len = fis.read(bys)) != -1) {
      fos.write(bys, 0, len);
    }

    fos.close();
    fis.close();
  }

  // 基本字节流一次读写一个字节
  public static void method1(String srcString, String destString)
      throws IOException {
    FileInputStream fis = new FileInputStream(srcString);
    FileOutputStream fos = new FileOutputStream(destString);

    int by = 0;
    while ((by = fis.read()) != -1) {
      fos.write(by);
    }

    fos.close();
    fis.close();
  }

}

